<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 18-1里我们说了yield译作产出的意思，可是代码并没有体现出产出这个概念，别急，这就告诉你
        function *gen(){
            // 只需在yield后面跟上你想产出的数据，就可以了
            let genres1 = yield '1111';//这样可以拿到next()里面的参数
            console.log(genres1);//2，有点奇怪，我们第一次调用next传的是1啊，怎么把第二个next里的参数打印了，这是因为yield会把数据产出后暂停当前函数，所以genres1的值就没有赋值为1，下次再调用next才会赋值，可是这次的next已经传的参数是2了，所以genres1就被赋值为了2。这我个人感觉算是一个缺陷，但是没办法，我们只是js的使用者，不是定义者 
            let genres2 = yield '2222';
            console.log(genres2);//3
        }

        let g = gen();

        // 这样就能拿到每次产出的数据了, 不过和迭代器的返回一样，是{ value:xxx,done:xxx }的形式
        let res1 = g.next(1);//next函数是可以传参的，至于传到哪去了，看上面的gen函数
        let res2 = g.next(2);
        let res3 = g.next(3);
    </script>
</body>
</html>